package com.chenfan.mcn.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.mcn.dao.LiveContractCommodityMapper;
import com.chenfan.common.extension.mybatisplus.enhanced.EnhancedService;
import com.chenfan.mcn.model.LiveContractCommodity;
import com.chenfan.mcn.model.dto.*;
import com.chenfan.mcn.model.vo.LiveCommodityListVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 直播商品服务接口
 * @author wulg
 * @date 2023/3/13
 */
public interface LiveCommodityService extends EnhancedService<LiveContractCommodityMapper, LiveContractCommodity> {

    /**
     * 保存
     * @param saveDTO
     * @return
     */
    Long save(LiveCommodityInfoSaveDTO saveDTO);

    /**
     * 变更商品状态
     * @param dto
     * @return
     */
    Boolean changeCommodityStatus(LiveCommodityStatusDTO dto);

    /**
     * 直播商品分页查询
     * @param searchDTO
     * @return
     */
    Page<LiveCommodityListVO> page(LiveCommoditySearchDTO searchDTO);

    /**
     * 直播商品 详情
     * @param id
     * @return
     */
    LiveCommodityListVO detail(Long id);

    /**
     * 导出Excel
     * @param searchDTO
     * @return
     */
    Map<String, Object> exportExcel(LiveCommoditySearchDTO searchDTO);


    /**
     * 下载失败原因-批量导入KOC红人
     * @param response
     * @param fileId
     * @param type
     */
    void downloadFailedReason(HttpServletResponse response, String fileId,Integer type);


    /**
     * （批量）认领
     * @param dto
     * @return
     */
    Boolean claim(LiveCommodityClaimDTO dto);

    /**
     * 解除直播合同关联
     * @param id
     * @return
     */
    Boolean releaseLiveContract(Long id);

    /**
     * 直播合同详情页
     * @param dto
     * @return
     */
    Boolean addLiveCommodityFromContractDetail(LiveContractAddCommodityDTO dto);

    /**
     * 导入商品excel
     * @param inputList
     * @param lsId
     * @return
     */
    String importCommodity(List<CommodityInputDTO> inputList, Long lsId);

    /**
     * 导入结算商品excel
     * @param inputList
     * @return
     */
    String importSettlmentCommodity(List<SettlementCommodityInputDTO> inputList);

    /**
     * 删除直播商品
     *
     * @param dto
     */
    void delete(LiveCommodityClaimDTO dto);
}
